# ① 开发注册接口 必须是POST请求
# 配置路由 /register  传递用户名 密码  返回数据：注册成功
# 数据携带方式改变，数据要放到请求体中（提示用form 下面一致）
from flask import Flask, request, jsonify

app = Flask(__name__)

app.config.from_pyfile("config.py")

register_list = []
token = ""


@app.route("/register", methods=["GET", "POST"])
def register():
    username = request.form.get("username")
    password = request.form.get("password")
    dict = {"username": username, "password": password}
    register_list.append(dict)
    return "注册成功"


# ② 开发登录接口 必须是POST请求
# 配置路由 /login  传递数据 用户名 密码 验证数据 如果用户名是Tom、密码是123则 设置一个全局变量例如 token="abcdefg"
# 如果不是则返回 用户名或密码错误
#      数据携带方式改变，数据要放到请求体中，登录成功了要重定向到博客列表处
#
@app.route("/login", methods=["GET", "POST"])
def login():
    global token
    username = request.form.get("username")
    password = request.form.get("password")
    for item in register_list:
        if item["username"] == username and item["password"] == password:
            token = "abcdefg"
            return "登录成功"
    return "用户名或密码错误"


# ③ 开发添加博客接口  必须是POST请求
#  配置路由 /addblog
# 设置一个全局列表 记录博客，首先验证token是否是abcdefg 如果是则表示登录成功了，获取传递来的 博客标题、博客作者 提示：用{}字典来记录一个博客信息。
# 博客信息在添加到全局博客列表中
# 添加博客功能，数据携带方式改变，数据要放到请求体中
add_list = []
add_dict = {"title":"今天很好","author":"加油"}


@app.route("/addblog", methods=["GET", "POST"])
def addblog():
    title = request.form.get("title")
    author = request.form.get("author")
    if token:
        add_list.append({"title": title, "author": author})
        return "添加成功"
    else:
        return "请先登录"


# ④开发查看博客列表接口 必须是GET请求
#
# 配置路由 /bloglist
# 遍历所有的博客列表 拼接字符串，例如 "标题1,作者1;标题2;作者2"
# 返回拼接好的字符串

# 查看博客列表，要求返回所有的列表数据

@app.route("/bloglist")
def bloglist():
    return jsonify(title,author)

@app.errorhandler(404)
def error_handler(e):
    return "您访问的链接还没出生或已经去世", 404


if __name__ == '__main__':
    app.run()

# 开发查看单个博客接口，要求url地址后携带博客标题，通过标题查找到响应的博客信息  返回（要求返回博客字典）


# 开发一场抓捕功能，可以抓波404异常，可以抓捕服务端报错异常


# 要求每次查看单个博客的同时，使用一个全局变量来记录博客的浏览量


# 每次请求过程中都要打印出请求开始，请求结束字样
